#ifndef _UTIL_COMMON
#define _UTIL_COMMON

#define _CRT_SECURE_NO_WARNINGS

#define WIN32
#define _WIN32_WINNT 0x400

typedef unsigned int ui32;
typedef unsigned __int64 ui64;
typedef unsigned char ui8;
typedef unsigned short ui16;
typedef int i32;
typedef __int64 i64;
typedef signed char i8;
typedef short i16;

#pragma warning(disable: 4800)
#pragma warning(disable: 4996)
#pragma warning(disable: 4251)
#pragma warning(disable: 4355)
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "libmysql.lib")
#pragma comment(lib, "libeay32.lib")
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "winmm.lib")

#ifndef SCRIPTENGINE
#define DLL_EXPORT __declspec(dllexport)
#define DLL_IMPORT __declspec(dllimport)
#else
#define DLL_EXPORT __declspec(dllimport)
#define DLL_IMPORT __declspec(dllexport)
#endif

#define M_PI 3.14159265f

#include <iostream>

using namespace std;

#ifdef WIN32
#include <conio.h>
#endif

#include <winsock2.h>
#include <windows.h>
#include <set>
#include <hash_map>
#include <hash_set>
#include <signal.h>
#include <map>
#include <vector>
#include <algorithm>
#include <time.h>
#include <mysql/mysql.h>
#include <fstream>
#include <cstdio>
#include <sstream>
#include <cmath>

#include <openssl/bn.h>
#include <openssl/md5.h>
#include <openssl/sha.h>
#include <openssl/hmac.h>


#include "MemoryAllocator.h"
#include "Thread.h"
#include "Sha1.h"
#include "MD5.h"
#include "BigNumber.h"
#include "RC4.h"
#include "HMAC.h"
#include "WoWCrypt.h"
#include "Database.h"
#include "ScopedLock.h"
#include "Config.h"
#include "Single.h"
#include "CLog.h"
#include "DBCStore.h"
#include "SQLStorage.h"
#include "ConsoleParser.h"
#include "Vectors.h"
#include "FileLogHandler.h"
#include "WoWString.h"

#endif